package main

import (
	"io"
	"net"
)

func Enpack(pkt *packet) []byte {
	return pkt.Bytes()
}

func Depack(con net.Conn, p *packet) {
	_, err := io.ReadFull(con, p.Head())
	if err != nil {
		p.Reset()
		panic(err)
	}

	Payloadlen := int(p.PayloadLen())

	if Payloadlen > cap(p.Payload()) {
		panic(ErrTooLarge)
	}

	p.AllocPayload(uint32(Payloadlen))
	if Payloadlen > 0 {
		_, err := io.ReadFull(con, p.Payload())
		if err != nil {
			p.ResetPayload()
			panic(err)
		}
	}
}
